home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 34
/
Amiga Format CD34 (1998-11-20)(Future Publishing)(GB)[!][Christmas issue].iso
/
-seriously_amiga-
/
programming
/
c
/
viewperf5.1
/
viewperf
/
mshf.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-10-01
|
5KB
|
176 lines
#ifdef WIN32
#include <windows.h>
#endif
#include <GL/gl.h>
#include "vpDefine.h"
#include "viewperf.h"
void FUNCTION(struct ThreadBlock *tb)
{
int meshnum,vertnum;
int numverts;
int meshcount = tb->np;
GLenum mode = tb->mode;
#ifdef EXTERNAL
GLenum capability = tb->capability;
void (*lExternfunc)(GLenum) = tb->externfunc;
#endif
struct mesh *pmsh=tb->msh;
struct vector *pvert;
#ifndef FUNCTION_CALLS
#ifdef WIN32
void (APIENTRY *glVertex3fvP)(const GLfloat *);
#else
void (*glVertex3fvP)(const GLfloat *);
#endif
#endif
#if defined(FACET_NORM) || defined(VERT_NORM)
struct vector *pnorm;
#ifndef FUNCTION_CALLS
#ifdef WIN32
void (APIENTRY *glNormal3fvP)(const GLfloat *);
#else
void (*glNormal3fvP)(const GLfloat *);
#endif
#endif /* ifndef FUNCTION_CALLS */
#endif
#if defined(FACET_COLOR) || defined(VERT_COLOR)
struct colorvector *pvcolor;
#ifndef FUNCTION_CALLS
#ifdef WIN32
void (APIENTRY *glColorP)(const GLfloat *);
#else
void (*glColorP)(const GLfloat *);
#endif
#endif /* ifndef FUNCTION_CALLS */
#endif
#ifdef TEXTURE
struct vector *ptexture;
#ifndef FUNCTION_CALLS
#ifdef WIN32
void (APIENTRY *glTexCoord2fvP)(const GLfloat *);
#else
void (*glTexCoord2fvP)(const GLfloat *);
#endif
#endif /* ifndef FUNCTION_CALLS */
#endif
#ifndef FUNCTION_CALLS
#ifdef TEXTURE
glTexCoord2fvP = glTexCoord2fv;
#endif
#if defined(FACET_COLOR) || defined(VERT_COLOR)
glColorP = tb->ColorP;
#endif
#if defined(FACET_NORM) || defined(VERT_NORM)
glNormal3fvP = glNormal3fv;
#endif
glVertex3fvP = glVertex3fv;
#endif
for(meshnum=meshcount-1;meshnum>=0;meshnum--) {
numverts = pmsh[meshnum].numverts;
pvert = pmsh[meshnum].verts;
#if defined(FACET_NORM) || defined(VERT_NORM)
pnorm = pmsh[meshnum].norms;
#endif
#if defined(FACET_COLOR) || defined(VERT_COLOR)
pvcolor = pmsh[meshnum].vcolor;
#endif
#ifdef TEXTURE
ptexture = pmsh[meshnum].texture;
#endif
#ifdef EXTERNAL
lExternfunc(capability);
#endif
#if defined(FACET_COLOR) && !defined(FUNCTION_CALLS)
(*glColorP)((const GLfloat *) (pvcolor));
#elif defined(FACET_COLOR) && defined(FUNCTION_CALLS) && !defined(COLOR4)
glColor3fv((const GLfloat *) (pvcolor));
#elif defined(FACET_COLOR) && defined(FUNCTION_CALLS) && defined(COLOR4)
glColor4fv((const GLfloat *) (pvcolor));
#endif
#if defined(FACET_NORM) && !defined(FUNCTION_CALLS)
(*glNormal3fvP)((const GLfloat *) (pnorm));
#elif defined(FACET_NORM) && defined(FUNCTION_CALLS)
glNormal3fv((const GLfloat *) (pnorm));
#endif
glBegin(mode);
#ifdef BY_TWO
for(vertnum=numverts-2;vertnum>=0;vertnum--) {
#else
for(vertnum=numverts-1;vertnum>=0;vertnum--) {
#endif
#if defined(VERT_COLOR) && !defined(FUNCTION_CALLS)
(*glColorP)((const GLfloat *) (pvcolor));
#elif defined(VERT_COLOR) && defined(FUNCTION_CALLS) && !defined(COLOR4)
glColor3fv((const GLfloat *) (pvcolor));
#elif defined(VERT_COLOR) && defined(FUNCTION_CALLS) && defined(COLOR4)
glColor4fv((const GLfloat *) (pvcolor));
#endif
#if defined(TEXTURE) && !defined(FUNCTION_CALLS)
(*glTexCoord2fvP)((const GLfloat *) (ptexture));
#elif defined(TEXTURE) && defined(FUNCTION_CALLS)
glTexCoord2fv((const GLfloat *) (ptexture));
#endif
#if defined(VERT_NORM) && !defined(FUNCTION_CALLS)
(*glNormal3fvP)((const GLfloat *) (pnorm));
#elif defined(VERT_NORM) && defined(FUNCTION_CALLS)
glNormal3fv((const GLfloat *) (pnorm));
#endif
#ifdef FUNCTION_CALLS
glVertex3fv((const GLfloat *) (pvert));
#else
(*glVertex3fvP)((const GLfloat *) (pvert));
#endif
#ifdef BY_TWO
#if defined(VERT_COLOR) && !defined(FUNCTION_CALLS)
(*glColorP)((const GLfloat *) (pvcolor+1));
#elif defined(VERT_COLOR) && defined(FUNCTION_CALLS) && !defined(COLOR4)
glColor3fv((const GLfloat *) (pvcolor+1));
#elif defined(VERT_COLOR) && defined(FUNCTION_CALLS) && defined(COLOR4)
glColor4fv((const GLfloat *) (pvcolor+1));
#endif
#if defined(TEXTURE) && !defined(FUNCTION_CALLS)
(*glTexCoord2fvP)((const GLfloat *) (ptexture+1));
#elif defined(TEXTURE) && defined(FUNCTION_CALLS)
glTexCoord2fv((const GLfloat *) (ptexture+1));
#endif
#if defined(VERT_NORM) && !defined(FUNCTION_CALLS)
(*glNormal3fvP)((const GLfloat *) (pnorm+1));
#elif defined(VERT_NORM) && defined(FUNCTION_CALLS)
glNormal3fv((const GLfloat *) (pnorm+1));
#endif
#ifdef FUNCTION_CALLS
glVertex3fv((const GLfloat *) (pvert+1));
#else
(*glVertex3fvP)((const GLfloat *) (pvert+1));
#endif
#endif
#ifdef VERT_COLOR
pvcolor += 1;
#endif
#ifdef TEXTURE
ptexture += 1;
#endif
#ifdef VERT_NORM
pnorm += 1;
#endif
pvert += 1;
}
glEnd();
}
}